﻿Public Class Doi1
    'state : 0 mặc định - trạng thái 1- tạo mới 2 sửa 3 - xóa
    Private state As Integer 'xử lý trạng thái để biết khi nào thì ở trạng thái nào 
    'load form
    Dim isLoad As Boolean = True 'xử lý khi load form (để coi form đã đc load hay chư
    Private Sub setReadonly(ByVal isTrue As Boolean) 'set readonly toàn bộ các iultragrid 
        Me.ChaIUltraGridDanhSach.setReadonly(isTrue)
        Me.ConIUltraGrid.setReadonly(isTrue)
    End Sub

    Private Sub loadDuLieu()
        If isLoad Then
            Me.ChaTableAdapter.Fill(Me.ErpharmaDataSet.cha)
            Me.ConTableAdapter.Fill(Me.ErpharmaDataSet.con)
            Me.setReadonly(True) ' set readonly = true tất cả các iultrarid khi load lên 
            isLoad = False ' trả về để đảm bảo load 1 lần dữ liệu (vì lần sau isload = false rồi thì ko load nữa)
        End If
    End Sub
    Private Sub loadCauHinh() 'set các cấu hình khác của iultragrid như mặc định , bắt lỗi , .... nếu có 
        'set giao diện
        Me.ChaIUltraGridThongTin.setGiaoDien_Doi_ThongTin()
        Me.ChaIUltraGridDanhSach.setGiaoDienTuyBien()
        Me.ConIUltraGrid.setGiaoDienTuyBien()

        Me.ChaIUltraGridThongTin.setDoiTuongXuLyDuLieu(Me.ErpharmaDataSet.cha, Me.ChaBindingSource, Me.ChaTableAdapter, Me.ErpharmaDataSet)
        Me.ConIUltraGrid.setDoiTuongXuLyDuLieu(Me.ErpharmaDataSet.con, Me.ConBindingSource, Me.ConTableAdapter, Me.ErpharmaDataSet)
    End Sub
    Private Sub NhomNguoiDung_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        loadDuLieu()
        loadCauHinh()
        Me.state = 0 'trạng thái mặc định ban đầu là 0
    End Sub

    Private Sub btnTaoMoi_Click(sender As System.Object, e As System.EventArgs) Handles btnTaoMoi.Click
        If Me.ChaIUltraGridThongTin.getTaoMoi() Then 'nếu tạo mới thành công thì mới có trạng thái là 1 
            Me.setReadonly(False)
            Me.state = 1
        End If
    End Sub
    Private Sub Luu()
        'lưu phần cha và con 
        'mục đích để xuất hiện messagebox 'có lưu không ' 1 lần 
        If Me.ChaIUltraGridThongTin.getCoThayDoiDuLieuKhong Then 'nếu cha có thay đổi dữ liệu
            If ChaIUltraGridThongTin.getLuu Then 'lưu cha
                Me.ConIUltraGrid.getLuuNgam() 'lưu ngầm con
                Me.state = 0 'trả về trạng thái form mặc định
                Me.setReadonly(True) 'set readonly cho toàn form 
                Exit Sub
            End If
        ElseIf ConIUltraGrid.getCoThayDoiDuLieuKhong Then 'trường hợp con thay đổi dữ liệu
            If ConIUltraGrid.getLuu Then
                Me.state = 0 'trả về trạng thái form mặc định
                Me.setReadonly(True) 'set readonly cho toàn form 
                Exit Sub
            End If
        End If
    End Sub
    Private Sub btnLuu_Click(sender As System.Object, e As System.EventArgs) Handles btnLuu.Click
        Luu()
    End Sub

    Private Sub btnXoa_Click(sender As System.Object, e As System.EventArgs) Handles btnXoa.Click
        If Me.ChaIUltraGridDanhSach.getXoa() Then
            Me.state = 0
        End If
    End Sub
    Private Sub LamTuoi()
        Dim position As Integer = Me.ChaBindingSource.Position 'lấy vị trí của cha hiện tại để sau khi load dữ liệu lại gán cho đúng vị trí 
        Me.isLoad = True 'gán lại bằng true để load lại dữ liệu
        Me.loadDuLieu()
        Me.ChaBindingSource.Position = position 'gán lại vị trí hiện tại
    End Sub
    Private Sub btnLamTuoi_Click(sender As System.Object, e As System.EventArgs) Handles btnLamTuoi.Click
        LamTuoi()
    End Sub

    Private Sub btnIn_Click(sender As System.Object, e As System.EventArgs) Handles btnIn.Click

    End Sub
    Private Sub Thoat()
        Me.Luu()
        Me.Dispose()
        Me.Close()
    End Sub
    Private Sub btnThoat_Click(sender As System.Object, e As System.EventArgs) Handles btnThoat.Click
        Thoat()
    End Sub

    Private Sub Sua()
        Me.setReadonly(False)
        Me.state = 2
    End Sub
    Private Sub btnSua_Click(sender As System.Object, e As System.EventArgs) Handles btnSua.Click
        Sua()
    End Sub
    'xử lý nhảy xuống phần chi tiết 
    Private Sub ChaIUltraGridThongTin_BeforeCellDeactivate(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ChaIUltraGridThongTin.BeforeCellDeactivate
        If ChaIUltraGridThongTin.ActiveRow.Cells("ngay").IsActiveCell Then
            Me.ChaIUltraGridThongTin.getLuuNgam()
            ChaIUltraGridThongTin.setFocusCellUltraGrid(Me.ConIUltraGrid)
        End If
    End Sub
End Class